package com.example;

import java.io.*;
import java.sql.*;
import java.util.*;

public class UserService {
    private static List<String> cache = new ArrayList<>();  // 非线程安全的静态变量
    private Connection connection;
    
    public User getUserById(String id) {
        // 潜在的SQL注入风险
        String sql = "SELECT * FROM users WHERE id = " + id;
        
        try {
            Statement stmt = connection.createStatement();
            ResultSet rs = stmt.executeQuery(sql);
            
            if (rs.next()) {
                User user = new User();
                user.setName(rs.getString("name"));
                // 未关闭ResultSet和Statement - 资源泄漏
                return user;
            }
        } catch (Exception e) {
            // 空异常处理
        }
        
        return null;  // 可能导致空指针异常
    }
    
    public void processFile(String filename) {
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(filename);
            // 处理文件
            int data = fis.read();
        } catch (IOException e) {
            e.printStackTrace();  // 不安全的异常处理
        }
        // 未在finally中关闭文件流 - 资源泄漏
    }
    
    public String[] getUsers() {
        List<String> users = new ArrayList<>();
        // 添加用户逻辑
        
        String[] result = new String[users.size()];
        for (int i = 0; i <= users.size(); i++) {  // 数组越界风险
            result[i] = users.get(i);
        }
        
        return result;
    }
    
    public synchronized void addToCache(String item) {
        cache.add(item);  // 虽然方法同步，但静态变量本身不是线程安全的
    }
    
    // 内存泄漏风险 - 没有清理缓存的机制
    public void clearCache() {
        // 空实现
    }
}
